package jnpf.database.datatype.limit;

import jnpf.database.datatype.limit.base.DtLimitBase;
import jnpf.database.datatype.limit.base.DtLimitModel;
import jnpf.database.datatype.limit.util.DtLimitUtil;
import jnpf.database.datatype.model.DataTypeModel;
import jnpf.database.datatype.model.ViewDtModel;

/**
 * 类功能
 *
 * @author JNPF开发平台组 YanYu
 * @version V3.3
 * @copyright 引迈信息技术有限公司
 * @date 2022-06-06
 */
public class DateTimeLimit extends DtLimitBase {

    public final static String CATEGORY = "type-DateTime";
    public final static String JAVA_TYPE = "date";

    public DateTimeLimit(){
        instanceCommon(false, null, null, null);
    }

    /**
     * 给mysql year专用的创建方式
     */
    public DateTimeLimit(Integer fixedPrecision){
        instanceCommon(false, fixedPrecision, null, null);
    }

    public DateTimeLimit(Boolean modifyFlag, Integer defaultScale, Integer maxScale){
        instanceCommon(false, null, defaultScale, maxScale);
    }

    public void instanceCommon(Boolean isModifyFlag, Integer fixedPrecision, Integer defaultScale, Integer maxScale){
        init(CATEGORY);
        this.isModifyFlag = isModifyFlag;
        // 精度
        DtLimitModel numPrecisionModel = new DtLimitModel();
        numPrecisionModel.setFixed(fixedPrecision);
        this.numPrecisionLm = numPrecisionModel;
        // 标度
        DtLimitModel numScaleModel = new DtLimitModel();
        numScaleModel.setDefaults(defaultScale);
        numScaleModel.setMax(maxScale);
        this.numScaleLm = numScaleModel;
    }

    @Override
    public DataTypeModel convert(ViewDtModel viewDtModel){
        DataTypeModel dataTypeModel = DtLimitUtil.convertUnModify(viewDtModel.getDtEnum());
        dataTypeModel.setJavaType(JAVA_TYPE);
        if(this.isModifyFlag){
            dataTypeModel.setFormatLengthStr("");
        }
        return dataTypeModel;
    }

}
